/** 
 * \file   facturationFM.h
 * \interface facturationFM
 * \author ade
 * \author morgane
 * \author heni
 * \brief Interface de declaration d'un type de donnees Facturation.
 *
 * Definition de fonctions et procedures destinees a
 * manipuler des donnees de ce type.
 */



#include "typesprimitifs.h"
#include "fournisseur.h"
#include "commande.h"

#ifndef _FACTURATIONFM_h
#define _FACTURATIONFM_h

typedef struct FacturationFM {
    /*on definit la structure FacturationFM qui contient des variables
    de types FOURNISSEUR, DOUBLE, COMMANDE, BOOLEEN */

    POINTEUR_FOURNISSEUR fournisseur;
    DOUBLE montant;
    POINTEUR_COMMANDE commande;
    BOOLEEN regle;
} FACTURATIONFM, *POINTEUR_FACTURATIONFM;

/**
 * Cree une facturationFM
 * \param[in] pfournisseur un pointeur sur le fournisseur des produits commandes
 * \param[in] montt le montant a regler
 * \param[in] pcommande un pointeur sur la commande
 * \return un pointeur sur un objet facturationFM, NULL si un des parametres
 * pfournisseur ou pcommande est NULL
 */
extern POINTEUR_FACTURATIONFM creer_facturationFM(POINTEUR_FOURNISSEUR pfournisseur, DOUBLE montt,
        POINTEUR_COMMANDE pcommande);

/** 
 * affiche une facturation passee en parametre
 * \param[in] factFM facturation qu'il faut afficher
 */
extern void afficher_facturationFM(POINTEUR_FACTURATIONFM factFM);

/**
 * Libere une facturationFM passee en parametre.
 * \param[in] pfactFM un pointeur sur la facturation a liberer
 */
extern void liberer_facturationFM(POINTEUR_FACTURATIONFM pfactFM);

#endif /* _FACTURATIONFM_H */

